package com.example.shiro_ini;

import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;

public class CustomRealm extends AuthorizingRealm {
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        //登录成功后，从SimplteAuthenticationInfo中获取校长的信息
        String primaryPrincipals = principals.getPrimaryPrincipal()+"";
       // //模拟去数据库中，查出该用户的所有角色和权限，并封装到SimpleAuthorizationInfo中！
        SimpleAuthorizationInfo simpleAuthorizationInfo=new SimpleAuthorizationInfo();
        //添加角色
        simpleAuthorizationInfo.addRole("boss");
        //添加权限
        simpleAuthorizationInfo.addStringPermission("eat:rou");
        return simpleAuthorizationInfo;
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;
        String username = usernamePasswordToken.getUsername();
        //mybatis调用方法去数据库查出所有的 密码 和 用户 等信息。
        //假的模拟的数据 if就是去数据库查出的用户信息数据
        if ("leimin".equals(username)){
            //返回给shiro一个SimpleAuthenticationInfo，以便底层去帮你匹配信息校验登录情况。
            //这个里面的凭证信息都是来自数据库中的，都是正确的，但是你传的密码不一定正确的 123456 来自数据库
            return new SimpleAuthenticationInfo(username,"123456","CustomRealm");
        }
        return null;
    }
}
